import java.util.ArrayList;
import java.util.List;

/*
 * @lc app=leetcode.cn id=118 lang=java
 *
 * [118] 杨辉三角
 */

// @lc code=start
class Solution {
    // 以前写过cpp版本的，本质上就是每次保留上一层的List<>
    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ans = new ArrayList<>();
        if(numRows == 0) return ans;//空的
        List<Integer> before = new ArrayList<>();//记录上一层
        for(int i =0 ;i<numRows ;i++){
            List<Integer> temp = new ArrayList<>();
            for(int j=0 ; j<=i ;j++){//每行i+1个数
                if(j==0 || j==i) temp.add(1);
                else temp.add(before.get(j-1)+before.get(j));//不然就是上一层对应的两个相加
            }
            before = temp;
            ans.add(temp);
        }
        return ans;
    }
}
// @lc code=end

